package de.thwildau.tm.moses.abnf.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import de.thwildau.tm.moses.abnf.services.AbnfGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalAbnfParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_NUM", "RULE_HEX", "RULE_DIGIT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'/'", "'('", "')'", "'['", "']'", "'%b'", "'.'", "'-'", "'%d'", "'%x'", "'<'", "'>'", "'*'"
    };
    public static final int RULE_ID=4;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=11;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=9;
    public static final int EOF=-1;
    public static final int RULE_NUM=6;
    public static final int T__19=19;
    public static final int RULE_HEX=7;
    public static final int RULE_STRING=5;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_WS=10;
    public static final int RULE_DIGIT=8;

    // delegates
    // delegators


        public InternalAbnfParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalAbnfParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalAbnfParser.tokenNames; }
    public String getGrammarFileName() { return "../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g"; }



     	private AbnfGrammarAccess grammarAccess;
     	
        public InternalAbnfParser(TokenStream input, AbnfGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "RuleSet";	
       	}
       	
       	@Override
       	protected AbnfGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleRuleSet"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:67:1: entryRuleRuleSet returns [EObject current=null] : iv_ruleRuleSet= ruleRuleSet EOF ;
    public final EObject entryRuleRuleSet() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRuleSet = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:68:2: (iv_ruleRuleSet= ruleRuleSet EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:69:2: iv_ruleRuleSet= ruleRuleSet EOF
            {
             newCompositeNode(grammarAccess.getRuleSetRule()); 
            pushFollow(FOLLOW_ruleRuleSet_in_entryRuleRuleSet75);
            iv_ruleRuleSet=ruleRuleSet();

            state._fsp--;

             current =iv_ruleRuleSet; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRuleSet85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRuleSet"


    // $ANTLR start "ruleRuleSet"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:76:1: ruleRuleSet returns [EObject current=null] : ( (lv_rules_0_0= ruleRule ) )+ ;
    public final EObject ruleRuleSet() throws RecognitionException {
        EObject current = null;

        EObject lv_rules_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:79:28: ( ( (lv_rules_0_0= ruleRule ) )+ )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:80:1: ( (lv_rules_0_0= ruleRule ) )+
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:80:1: ( (lv_rules_0_0= ruleRule ) )+
            int cnt1=0;
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==RULE_ID) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:81:1: (lv_rules_0_0= ruleRule )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:81:1: (lv_rules_0_0= ruleRule )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:82:3: lv_rules_0_0= ruleRule
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getRuleSetAccess().getRulesRuleParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleRule_in_ruleRuleSet130);
            	    lv_rules_0_0=ruleRule();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getRuleSetRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"rules",
            	            		lv_rules_0_0, 
            	            		"Rule");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt1 >= 1 ) break loop1;
                        EarlyExitException eee =
                            new EarlyExitException(1, input);
                        throw eee;
                }
                cnt1++;
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRuleSet"


    // $ANTLR start "entryRuleRule"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:106:1: entryRuleRule returns [EObject current=null] : iv_ruleRule= ruleRule EOF ;
    public final EObject entryRuleRule() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRule = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:107:2: (iv_ruleRule= ruleRule EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:108:2: iv_ruleRule= ruleRule EOF
            {
             newCompositeNode(grammarAccess.getRuleRule()); 
            pushFollow(FOLLOW_ruleRule_in_entryRuleRule166);
            iv_ruleRule=ruleRule();

            state._fsp--;

             current =iv_ruleRule; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRule176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRule"


    // $ANTLR start "ruleRule"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:115:1: ruleRule returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_alternation_2_0= ruleAlternation ) ) ) ;
    public final EObject ruleRule() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        EObject lv_alternation_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:118:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_alternation_2_0= ruleAlternation ) ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:119:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_alternation_2_0= ruleAlternation ) ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:119:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_alternation_2_0= ruleAlternation ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:119:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_alternation_2_0= ruleAlternation ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:119:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:120:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:120:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:121:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRule218); 

            			newLeafNode(lv_name_0_0, grammarAccess.getRuleAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRuleRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            otherlv_1=(Token)match(input,12,FOLLOW_12_in_ruleRule235); 

                	newLeafNode(otherlv_1, grammarAccess.getRuleAccess().getEqualsSignKeyword_1());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:141:1: ( (lv_alternation_2_0= ruleAlternation ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:142:1: (lv_alternation_2_0= ruleAlternation )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:142:1: (lv_alternation_2_0= ruleAlternation )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:143:3: lv_alternation_2_0= ruleAlternation
            {
             
            	        newCompositeNode(grammarAccess.getRuleAccess().getAlternationAlternationParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleAlternation_in_ruleRule256);
            lv_alternation_2_0=ruleAlternation();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRuleRule());
            	        }
                   		set(
                   			current, 
                   			"alternation",
                    		lv_alternation_2_0, 
                    		"Alternation");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRule"


    // $ANTLR start "entryRuleAlternation"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:167:1: entryRuleAlternation returns [EObject current=null] : iv_ruleAlternation= ruleAlternation EOF ;
    public final EObject entryRuleAlternation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAlternation = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:168:2: (iv_ruleAlternation= ruleAlternation EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:169:2: iv_ruleAlternation= ruleAlternation EOF
            {
             newCompositeNode(grammarAccess.getAlternationRule()); 
            pushFollow(FOLLOW_ruleAlternation_in_entryRuleAlternation292);
            iv_ruleAlternation=ruleAlternation();

            state._fsp--;

             current =iv_ruleAlternation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAlternation302); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAlternation"


    // $ANTLR start "ruleAlternation"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:176:1: ruleAlternation returns [EObject current=null] : ( ( (lv_concatenations_0_0= ruleConcatenation ) ) (otherlv_1= '/' ( (lv_concatenations_2_0= ruleConcatenation ) ) )* ) ;
    public final EObject ruleAlternation() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_concatenations_0_0 = null;

        EObject lv_concatenations_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:179:28: ( ( ( (lv_concatenations_0_0= ruleConcatenation ) ) (otherlv_1= '/' ( (lv_concatenations_2_0= ruleConcatenation ) ) )* ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:180:1: ( ( (lv_concatenations_0_0= ruleConcatenation ) ) (otherlv_1= '/' ( (lv_concatenations_2_0= ruleConcatenation ) ) )* )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:180:1: ( ( (lv_concatenations_0_0= ruleConcatenation ) ) (otherlv_1= '/' ( (lv_concatenations_2_0= ruleConcatenation ) ) )* )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:180:2: ( (lv_concatenations_0_0= ruleConcatenation ) ) (otherlv_1= '/' ( (lv_concatenations_2_0= ruleConcatenation ) ) )*
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:180:2: ( (lv_concatenations_0_0= ruleConcatenation ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:181:1: (lv_concatenations_0_0= ruleConcatenation )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:181:1: (lv_concatenations_0_0= ruleConcatenation )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:182:3: lv_concatenations_0_0= ruleConcatenation
            {
             
            	        newCompositeNode(grammarAccess.getAlternationAccess().getConcatenationsConcatenationParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleConcatenation_in_ruleAlternation348);
            lv_concatenations_0_0=ruleConcatenation();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAlternationRule());
            	        }
                   		add(
                   			current, 
                   			"concatenations",
                    		lv_concatenations_0_0, 
                    		"Concatenation");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:198:2: (otherlv_1= '/' ( (lv_concatenations_2_0= ruleConcatenation ) ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==13) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:198:4: otherlv_1= '/' ( (lv_concatenations_2_0= ruleConcatenation ) )
            	    {
            	    otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleAlternation361); 

            	        	newLeafNode(otherlv_1, grammarAccess.getAlternationAccess().getSolidusKeyword_1_0());
            	        
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:202:1: ( (lv_concatenations_2_0= ruleConcatenation ) )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:203:1: (lv_concatenations_2_0= ruleConcatenation )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:203:1: (lv_concatenations_2_0= ruleConcatenation )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:204:3: lv_concatenations_2_0= ruleConcatenation
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getAlternationAccess().getConcatenationsConcatenationParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleConcatenation_in_ruleAlternation382);
            	    lv_concatenations_2_0=ruleConcatenation();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getAlternationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"concatenations",
            	            		lv_concatenations_2_0, 
            	            		"Concatenation");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAlternation"


    // $ANTLR start "entryRuleConcatenation"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:228:1: entryRuleConcatenation returns [EObject current=null] : iv_ruleConcatenation= ruleConcatenation EOF ;
    public final EObject entryRuleConcatenation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConcatenation = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:229:2: (iv_ruleConcatenation= ruleConcatenation EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:230:2: iv_ruleConcatenation= ruleConcatenation EOF
            {
             newCompositeNode(grammarAccess.getConcatenationRule()); 
            pushFollow(FOLLOW_ruleConcatenation_in_entryRuleConcatenation420);
            iv_ruleConcatenation=ruleConcatenation();

            state._fsp--;

             current =iv_ruleConcatenation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConcatenation430); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConcatenation"


    // $ANTLR start "ruleConcatenation"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:237:1: ruleConcatenation returns [EObject current=null] : ( (lv_repetitions_0_0= ruleRepetition ) )+ ;
    public final EObject ruleConcatenation() throws RecognitionException {
        EObject current = null;

        EObject lv_repetitions_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:240:28: ( ( (lv_repetitions_0_0= ruleRepetition ) )+ )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:241:1: ( (lv_repetitions_0_0= ruleRepetition ) )+
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:241:1: ( (lv_repetitions_0_0= ruleRepetition ) )+
            int cnt3=0;
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==RULE_ID) ) {
                    int LA3_2 = input.LA(2);

                    if ( (LA3_2==EOF||(LA3_2>=RULE_ID && LA3_2<=RULE_NUM)||(LA3_2>=13 && LA3_2<=18)||(LA3_2>=21 && LA3_2<=23)||LA3_2==25) ) {
                        alt3=1;
                    }


                }
                else if ( ((LA3_0>=RULE_STRING && LA3_0<=RULE_NUM)||LA3_0==14||LA3_0==16||LA3_0==18||(LA3_0>=21 && LA3_0<=23)||LA3_0==25) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:242:1: (lv_repetitions_0_0= ruleRepetition )
            	    {
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:242:1: (lv_repetitions_0_0= ruleRepetition )
            	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:243:3: lv_repetitions_0_0= ruleRepetition
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getConcatenationAccess().getRepetitionsRepetitionParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleRepetition_in_ruleConcatenation475);
            	    lv_repetitions_0_0=ruleRepetition();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getConcatenationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"repetitions",
            	            		lv_repetitions_0_0, 
            	            		"Repetition");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt3 >= 1 ) break loop3;
                        EarlyExitException eee =
                            new EarlyExitException(3, input);
                        throw eee;
                }
                cnt3++;
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConcatenation"


    // $ANTLR start "entryRuleRepetition"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:267:1: entryRuleRepetition returns [EObject current=null] : iv_ruleRepetition= ruleRepetition EOF ;
    public final EObject entryRuleRepetition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRepetition = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:268:2: (iv_ruleRepetition= ruleRepetition EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:269:2: iv_ruleRepetition= ruleRepetition EOF
            {
             newCompositeNode(grammarAccess.getRepetitionRule()); 
            pushFollow(FOLLOW_ruleRepetition_in_entryRuleRepetition511);
            iv_ruleRepetition=ruleRepetition();

            state._fsp--;

             current =iv_ruleRepetition; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRepetition521); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRepetition"


    // $ANTLR start "ruleRepetition"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:276:1: ruleRepetition returns [EObject current=null] : ( ( (lv_repeat_0_0= ruleRepeat ) )? ( (lv_element_1_0= ruleElement ) ) ) ;
    public final EObject ruleRepetition() throws RecognitionException {
        EObject current = null;

        EObject lv_repeat_0_0 = null;

        EObject lv_element_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:279:28: ( ( ( (lv_repeat_0_0= ruleRepeat ) )? ( (lv_element_1_0= ruleElement ) ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:280:1: ( ( (lv_repeat_0_0= ruleRepeat ) )? ( (lv_element_1_0= ruleElement ) ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:280:1: ( ( (lv_repeat_0_0= ruleRepeat ) )? ( (lv_element_1_0= ruleElement ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:280:2: ( (lv_repeat_0_0= ruleRepeat ) )? ( (lv_element_1_0= ruleElement ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:280:2: ( (lv_repeat_0_0= ruleRepeat ) )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==RULE_NUM||LA4_0==25) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:281:1: (lv_repeat_0_0= ruleRepeat )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:281:1: (lv_repeat_0_0= ruleRepeat )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:282:3: lv_repeat_0_0= ruleRepeat
                    {
                     
                    	        newCompositeNode(grammarAccess.getRepetitionAccess().getRepeatRepeatParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleRepeat_in_ruleRepetition567);
                    lv_repeat_0_0=ruleRepeat();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getRepetitionRule());
                    	        }
                           		set(
                           			current, 
                           			"repeat",
                            		lv_repeat_0_0, 
                            		"Repeat");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:298:3: ( (lv_element_1_0= ruleElement ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:299:1: (lv_element_1_0= ruleElement )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:299:1: (lv_element_1_0= ruleElement )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:300:3: lv_element_1_0= ruleElement
            {
             
            	        newCompositeNode(grammarAccess.getRepetitionAccess().getElementElementParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleElement_in_ruleRepetition589);
            lv_element_1_0=ruleElement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRepetitionRule());
            	        }
                   		set(
                   			current, 
                   			"element",
                    		lv_element_1_0, 
                    		"Element");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRepetition"


    // $ANTLR start "entryRuleElement"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:324:1: entryRuleElement returns [EObject current=null] : iv_ruleElement= ruleElement EOF ;
    public final EObject entryRuleElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElement = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:325:2: (iv_ruleElement= ruleElement EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:326:2: iv_ruleElement= ruleElement EOF
            {
             newCompositeNode(grammarAccess.getElementRule()); 
            pushFollow(FOLLOW_ruleElement_in_entryRuleElement625);
            iv_ruleElement=ruleElement();

            state._fsp--;

             current =iv_ruleElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleElement635); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElement"


    // $ANTLR start "ruleElement"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:333:1: ruleElement returns [EObject current=null] : (this_Group_0= ruleGroup | this_Option_1= ruleOption | this_RuleRef_2= ruleRuleRef | this_CharVal_3= ruleCharVal | this_NumVal_4= ruleNumVal | this_ProseVal_5= ruleProseVal ) ;
    public final EObject ruleElement() throws RecognitionException {
        EObject current = null;

        EObject this_Group_0 = null;

        EObject this_Option_1 = null;

        EObject this_RuleRef_2 = null;

        EObject this_CharVal_3 = null;

        EObject this_NumVal_4 = null;

        EObject this_ProseVal_5 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:336:28: ( (this_Group_0= ruleGroup | this_Option_1= ruleOption | this_RuleRef_2= ruleRuleRef | this_CharVal_3= ruleCharVal | this_NumVal_4= ruleNumVal | this_ProseVal_5= ruleProseVal ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:337:1: (this_Group_0= ruleGroup | this_Option_1= ruleOption | this_RuleRef_2= ruleRuleRef | this_CharVal_3= ruleCharVal | this_NumVal_4= ruleNumVal | this_ProseVal_5= ruleProseVal )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:337:1: (this_Group_0= ruleGroup | this_Option_1= ruleOption | this_RuleRef_2= ruleRuleRef | this_CharVal_3= ruleCharVal | this_NumVal_4= ruleNumVal | this_ProseVal_5= ruleProseVal )
            int alt5=6;
            switch ( input.LA(1) ) {
            case 14:
                {
                alt5=1;
                }
                break;
            case 16:
                {
                alt5=2;
                }
                break;
            case RULE_ID:
                {
                alt5=3;
                }
                break;
            case RULE_STRING:
                {
                alt5=4;
                }
                break;
            case 18:
            case 21:
            case 22:
                {
                alt5=5;
                }
                break;
            case 23:
                {
                alt5=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:338:5: this_Group_0= ruleGroup
                    {
                     
                            newCompositeNode(grammarAccess.getElementAccess().getGroupParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleGroup_in_ruleElement682);
                    this_Group_0=ruleGroup();

                    state._fsp--;

                     
                            current = this_Group_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:348:5: this_Option_1= ruleOption
                    {
                     
                            newCompositeNode(grammarAccess.getElementAccess().getOptionParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleOption_in_ruleElement709);
                    this_Option_1=ruleOption();

                    state._fsp--;

                     
                            current = this_Option_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:358:5: this_RuleRef_2= ruleRuleRef
                    {
                     
                            newCompositeNode(grammarAccess.getElementAccess().getRuleRefParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleRuleRef_in_ruleElement736);
                    this_RuleRef_2=ruleRuleRef();

                    state._fsp--;

                     
                            current = this_RuleRef_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:368:5: this_CharVal_3= ruleCharVal
                    {
                     
                            newCompositeNode(grammarAccess.getElementAccess().getCharValParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleCharVal_in_ruleElement763);
                    this_CharVal_3=ruleCharVal();

                    state._fsp--;

                     
                            current = this_CharVal_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:378:5: this_NumVal_4= ruleNumVal
                    {
                     
                            newCompositeNode(grammarAccess.getElementAccess().getNumValParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleNumVal_in_ruleElement790);
                    this_NumVal_4=ruleNumVal();

                    state._fsp--;

                     
                            current = this_NumVal_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:388:5: this_ProseVal_5= ruleProseVal
                    {
                     
                            newCompositeNode(grammarAccess.getElementAccess().getProseValParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_ruleProseVal_in_ruleElement817);
                    this_ProseVal_5=ruleProseVal();

                    state._fsp--;

                     
                            current = this_ProseVal_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElement"


    // $ANTLR start "entryRuleRuleRef"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:404:1: entryRuleRuleRef returns [EObject current=null] : iv_ruleRuleRef= ruleRuleRef EOF ;
    public final EObject entryRuleRuleRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRuleRef = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:405:2: (iv_ruleRuleRef= ruleRuleRef EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:406:2: iv_ruleRuleRef= ruleRuleRef EOF
            {
             newCompositeNode(grammarAccess.getRuleRefRule()); 
            pushFollow(FOLLOW_ruleRuleRef_in_entryRuleRuleRef852);
            iv_ruleRuleRef=ruleRuleRef();

            state._fsp--;

             current =iv_ruleRuleRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRuleRef862); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRuleRef"


    // $ANTLR start "ruleRuleRef"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:413:1: ruleRuleRef returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ;
    public final EObject ruleRuleRef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:416:28: ( ( (otherlv_0= RULE_ID ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:417:1: ( (otherlv_0= RULE_ID ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:417:1: ( (otherlv_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:418:1: (otherlv_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:418:1: (otherlv_0= RULE_ID )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:419:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getRuleRefRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleRef906); 

            		newLeafNode(otherlv_0, grammarAccess.getRuleRefAccess().getRuleRuleCrossReference_0()); 
            	

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRuleRef"


    // $ANTLR start "entryRuleGroup"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:438:1: entryRuleGroup returns [EObject current=null] : iv_ruleGroup= ruleGroup EOF ;
    public final EObject entryRuleGroup() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGroup = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:439:2: (iv_ruleGroup= ruleGroup EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:440:2: iv_ruleGroup= ruleGroup EOF
            {
             newCompositeNode(grammarAccess.getGroupRule()); 
            pushFollow(FOLLOW_ruleGroup_in_entryRuleGroup941);
            iv_ruleGroup=ruleGroup();

            state._fsp--;

             current =iv_ruleGroup; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGroup951); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleGroup"


    // $ANTLR start "ruleGroup"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:447:1: ruleGroup returns [EObject current=null] : (otherlv_0= '(' ( (lv_alternation_1_0= ruleAlternation ) ) otherlv_2= ')' ) ;
    public final EObject ruleGroup() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_alternation_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:450:28: ( (otherlv_0= '(' ( (lv_alternation_1_0= ruleAlternation ) ) otherlv_2= ')' ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:451:1: (otherlv_0= '(' ( (lv_alternation_1_0= ruleAlternation ) ) otherlv_2= ')' )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:451:1: (otherlv_0= '(' ( (lv_alternation_1_0= ruleAlternation ) ) otherlv_2= ')' )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:451:3: otherlv_0= '(' ( (lv_alternation_1_0= ruleAlternation ) ) otherlv_2= ')'
            {
            otherlv_0=(Token)match(input,14,FOLLOW_14_in_ruleGroup988); 

                	newLeafNode(otherlv_0, grammarAccess.getGroupAccess().getLeftParenthesisKeyword_0());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:455:1: ( (lv_alternation_1_0= ruleAlternation ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:456:1: (lv_alternation_1_0= ruleAlternation )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:456:1: (lv_alternation_1_0= ruleAlternation )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:457:3: lv_alternation_1_0= ruleAlternation
            {
             
            	        newCompositeNode(grammarAccess.getGroupAccess().getAlternationAlternationParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleAlternation_in_ruleGroup1009);
            lv_alternation_1_0=ruleAlternation();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getGroupRule());
            	        }
                   		set(
                   			current, 
                   			"alternation",
                    		lv_alternation_1_0, 
                    		"Alternation");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleGroup1021); 

                	newLeafNode(otherlv_2, grammarAccess.getGroupAccess().getRightParenthesisKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleGroup"


    // $ANTLR start "entryRuleOption"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:485:1: entryRuleOption returns [EObject current=null] : iv_ruleOption= ruleOption EOF ;
    public final EObject entryRuleOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOption = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:486:2: (iv_ruleOption= ruleOption EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:487:2: iv_ruleOption= ruleOption EOF
            {
             newCompositeNode(grammarAccess.getOptionRule()); 
            pushFollow(FOLLOW_ruleOption_in_entryRuleOption1057);
            iv_ruleOption=ruleOption();

            state._fsp--;

             current =iv_ruleOption; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleOption1067); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOption"


    // $ANTLR start "ruleOption"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:494:1: ruleOption returns [EObject current=null] : (otherlv_0= '[' ( (lv_alternation_1_0= ruleAlternation ) ) otherlv_2= ']' ) ;
    public final EObject ruleOption() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_alternation_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:497:28: ( (otherlv_0= '[' ( (lv_alternation_1_0= ruleAlternation ) ) otherlv_2= ']' ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:498:1: (otherlv_0= '[' ( (lv_alternation_1_0= ruleAlternation ) ) otherlv_2= ']' )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:498:1: (otherlv_0= '[' ( (lv_alternation_1_0= ruleAlternation ) ) otherlv_2= ']' )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:498:3: otherlv_0= '[' ( (lv_alternation_1_0= ruleAlternation ) ) otherlv_2= ']'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleOption1104); 

                	newLeafNode(otherlv_0, grammarAccess.getOptionAccess().getLeftSquareBracketKeyword_0());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:502:1: ( (lv_alternation_1_0= ruleAlternation ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:503:1: (lv_alternation_1_0= ruleAlternation )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:503:1: (lv_alternation_1_0= ruleAlternation )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:504:3: lv_alternation_1_0= ruleAlternation
            {
             
            	        newCompositeNode(grammarAccess.getOptionAccess().getAlternationAlternationParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleAlternation_in_ruleOption1125);
            lv_alternation_1_0=ruleAlternation();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getOptionRule());
            	        }
                   		set(
                   			current, 
                   			"alternation",
                    		lv_alternation_1_0, 
                    		"Alternation");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleOption1137); 

                	newLeafNode(otherlv_2, grammarAccess.getOptionAccess().getRightSquareBracketKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOption"


    // $ANTLR start "entryRuleCharVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:532:1: entryRuleCharVal returns [EObject current=null] : iv_ruleCharVal= ruleCharVal EOF ;
    public final EObject entryRuleCharVal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCharVal = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:533:2: (iv_ruleCharVal= ruleCharVal EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:534:2: iv_ruleCharVal= ruleCharVal EOF
            {
             newCompositeNode(grammarAccess.getCharValRule()); 
            pushFollow(FOLLOW_ruleCharVal_in_entryRuleCharVal1173);
            iv_ruleCharVal=ruleCharVal();

            state._fsp--;

             current =iv_ruleCharVal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCharVal1183); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCharVal"


    // $ANTLR start "ruleCharVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:541:1: ruleCharVal returns [EObject current=null] : ( (lv_value_0_0= RULE_STRING ) ) ;
    public final EObject ruleCharVal() throws RecognitionException {
        EObject current = null;

        Token lv_value_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:544:28: ( ( (lv_value_0_0= RULE_STRING ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:545:1: ( (lv_value_0_0= RULE_STRING ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:545:1: ( (lv_value_0_0= RULE_STRING ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:546:1: (lv_value_0_0= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:546:1: (lv_value_0_0= RULE_STRING )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:547:3: lv_value_0_0= RULE_STRING
            {
            lv_value_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleCharVal1224); 

            			newLeafNode(lv_value_0_0, grammarAccess.getCharValAccess().getValueSTRINGTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getCharValRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"value",
                    		lv_value_0_0, 
                    		"STRING");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCharVal"


    // $ANTLR start "entryRuleNumVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:571:1: entryRuleNumVal returns [EObject current=null] : iv_ruleNumVal= ruleNumVal EOF ;
    public final EObject entryRuleNumVal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumVal = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:572:2: (iv_ruleNumVal= ruleNumVal EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:573:2: iv_ruleNumVal= ruleNumVal EOF
            {
             newCompositeNode(grammarAccess.getNumValRule()); 
            pushFollow(FOLLOW_ruleNumVal_in_entryRuleNumVal1264);
            iv_ruleNumVal=ruleNumVal();

            state._fsp--;

             current =iv_ruleNumVal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumVal1274); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumVal"


    // $ANTLR start "ruleNumVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:580:1: ruleNumVal returns [EObject current=null] : (this_BinVal_0= ruleBinVal | this_DecVal_1= ruleDecVal | this_HexVal_2= ruleHexVal ) ;
    public final EObject ruleNumVal() throws RecognitionException {
        EObject current = null;

        EObject this_BinVal_0 = null;

        EObject this_DecVal_1 = null;

        EObject this_HexVal_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:583:28: ( (this_BinVal_0= ruleBinVal | this_DecVal_1= ruleDecVal | this_HexVal_2= ruleHexVal ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:584:1: (this_BinVal_0= ruleBinVal | this_DecVal_1= ruleDecVal | this_HexVal_2= ruleHexVal )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:584:1: (this_BinVal_0= ruleBinVal | this_DecVal_1= ruleDecVal | this_HexVal_2= ruleHexVal )
            int alt6=3;
            switch ( input.LA(1) ) {
            case 18:
                {
                alt6=1;
                }
                break;
            case 21:
                {
                alt6=2;
                }
                break;
            case 22:
                {
                alt6=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:585:5: this_BinVal_0= ruleBinVal
                    {
                     
                            newCompositeNode(grammarAccess.getNumValAccess().getBinValParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleBinVal_in_ruleNumVal1321);
                    this_BinVal_0=ruleBinVal();

                    state._fsp--;

                     
                            current = this_BinVal_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:595:5: this_DecVal_1= ruleDecVal
                    {
                     
                            newCompositeNode(grammarAccess.getNumValAccess().getDecValParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleDecVal_in_ruleNumVal1348);
                    this_DecVal_1=ruleDecVal();

                    state._fsp--;

                     
                            current = this_DecVal_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:605:5: this_HexVal_2= ruleHexVal
                    {
                     
                            newCompositeNode(grammarAccess.getNumValAccess().getHexValParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleHexVal_in_ruleNumVal1375);
                    this_HexVal_2=ruleHexVal();

                    state._fsp--;

                     
                            current = this_HexVal_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumVal"


    // $ANTLR start "entryRuleBinVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:621:1: entryRuleBinVal returns [EObject current=null] : iv_ruleBinVal= ruleBinVal EOF ;
    public final EObject entryRuleBinVal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBinVal = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:622:2: (iv_ruleBinVal= ruleBinVal EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:623:2: iv_ruleBinVal= ruleBinVal EOF
            {
             newCompositeNode(grammarAccess.getBinValRule()); 
            pushFollow(FOLLOW_ruleBinVal_in_entryRuleBinVal1410);
            iv_ruleBinVal=ruleBinVal();

            state._fsp--;

             current =iv_ruleBinVal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBinVal1420); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBinVal"


    // $ANTLR start "ruleBinVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:630:1: ruleBinVal returns [EObject current=null] : (otherlv_0= '%b' ( (lv_value_1_0= RULE_NUM ) ) ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )? ) ;
    public final EObject ruleBinVal() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_value_1_0=null;
        Token otherlv_2=null;
        Token lv_value_3_0=null;
        Token otherlv_4=null;
        Token lv_maxValue_5_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:633:28: ( (otherlv_0= '%b' ( (lv_value_1_0= RULE_NUM ) ) ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )? ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:634:1: (otherlv_0= '%b' ( (lv_value_1_0= RULE_NUM ) ) ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )? )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:634:1: (otherlv_0= '%b' ( (lv_value_1_0= RULE_NUM ) ) ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )? )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:634:3: otherlv_0= '%b' ( (lv_value_1_0= RULE_NUM ) ) ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )?
            {
            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleBinVal1457); 

                	newLeafNode(otherlv_0, grammarAccess.getBinValAccess().getBKeyword_0());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:638:1: ( (lv_value_1_0= RULE_NUM ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:639:1: (lv_value_1_0= RULE_NUM )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:639:1: (lv_value_1_0= RULE_NUM )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:640:3: lv_value_1_0= RULE_NUM
            {
            lv_value_1_0=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleBinVal1474); 

            			newLeafNode(lv_value_1_0, grammarAccess.getBinValAccess().getValueNUMTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getBinValRule());
            	        }
                   		addWithLastConsumed(
                   			current, 
                   			"value",
                    		lv_value_1_0, 
                    		"NUM");
            	    

            }


            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:656:2: ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )?
            int alt8=3;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==19) ) {
                alt8=1;
            }
            else if ( (LA8_0==20) ) {
                alt8=2;
            }
            switch (alt8) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:656:3: (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:656:3: (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+
                    int cnt7=0;
                    loop7:
                    do {
                        int alt7=2;
                        int LA7_0 = input.LA(1);

                        if ( (LA7_0==19) ) {
                            alt7=1;
                        }


                        switch (alt7) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:656:5: otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) )
                    	    {
                    	    otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleBinVal1493); 

                    	        	newLeafNode(otherlv_2, grammarAccess.getBinValAccess().getFullStopKeyword_2_0_0());
                    	        
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:660:1: ( (lv_value_3_0= RULE_NUM ) )
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:661:1: (lv_value_3_0= RULE_NUM )
                    	    {
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:661:1: (lv_value_3_0= RULE_NUM )
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:662:3: lv_value_3_0= RULE_NUM
                    	    {
                    	    lv_value_3_0=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleBinVal1510); 

                    	    			newLeafNode(lv_value_3_0, grammarAccess.getBinValAccess().getValueNUMTerminalRuleCall_2_0_1_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getBinValRule());
                    	    	        }
                    	           		addWithLastConsumed(
                    	           			current, 
                    	           			"value",
                    	            		lv_value_3_0, 
                    	            		"NUM");
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt7 >= 1 ) break loop7;
                                EarlyExitException eee =
                                    new EarlyExitException(7, input);
                                throw eee;
                        }
                        cnt7++;
                    } while (true);


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:679:6: (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:679:6: (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:679:8: otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) )
                    {
                    otherlv_4=(Token)match(input,20,FOLLOW_20_in_ruleBinVal1536); 

                        	newLeafNode(otherlv_4, grammarAccess.getBinValAccess().getHyphenMinusKeyword_2_1_0());
                        
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:683:1: ( (lv_maxValue_5_0= RULE_NUM ) )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:684:1: (lv_maxValue_5_0= RULE_NUM )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:684:1: (lv_maxValue_5_0= RULE_NUM )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:685:3: lv_maxValue_5_0= RULE_NUM
                    {
                    lv_maxValue_5_0=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleBinVal1553); 

                    			newLeafNode(lv_maxValue_5_0, grammarAccess.getBinValAccess().getMaxValueNUMTerminalRuleCall_2_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getBinValRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"maxValue",
                            		lv_maxValue_5_0, 
                            		"NUM");
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBinVal"


    // $ANTLR start "entryRuleDecVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:709:1: entryRuleDecVal returns [EObject current=null] : iv_ruleDecVal= ruleDecVal EOF ;
    public final EObject entryRuleDecVal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDecVal = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:710:2: (iv_ruleDecVal= ruleDecVal EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:711:2: iv_ruleDecVal= ruleDecVal EOF
            {
             newCompositeNode(grammarAccess.getDecValRule()); 
            pushFollow(FOLLOW_ruleDecVal_in_entryRuleDecVal1597);
            iv_ruleDecVal=ruleDecVal();

            state._fsp--;

             current =iv_ruleDecVal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDecVal1607); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDecVal"


    // $ANTLR start "ruleDecVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:718:1: ruleDecVal returns [EObject current=null] : (otherlv_0= '%d' ( (lv_value_1_0= RULE_NUM ) ) ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )? ) ;
    public final EObject ruleDecVal() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_value_1_0=null;
        Token otherlv_2=null;
        Token lv_value_3_0=null;
        Token otherlv_4=null;
        Token lv_maxValue_5_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:721:28: ( (otherlv_0= '%d' ( (lv_value_1_0= RULE_NUM ) ) ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )? ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:722:1: (otherlv_0= '%d' ( (lv_value_1_0= RULE_NUM ) ) ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )? )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:722:1: (otherlv_0= '%d' ( (lv_value_1_0= RULE_NUM ) ) ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )? )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:722:3: otherlv_0= '%d' ( (lv_value_1_0= RULE_NUM ) ) ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )?
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleDecVal1644); 

                	newLeafNode(otherlv_0, grammarAccess.getDecValAccess().getDKeyword_0());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:726:1: ( (lv_value_1_0= RULE_NUM ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:727:1: (lv_value_1_0= RULE_NUM )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:727:1: (lv_value_1_0= RULE_NUM )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:728:3: lv_value_1_0= RULE_NUM
            {
            lv_value_1_0=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleDecVal1661); 

            			newLeafNode(lv_value_1_0, grammarAccess.getDecValAccess().getValueNUMTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDecValRule());
            	        }
                   		addWithLastConsumed(
                   			current, 
                   			"value",
                    		lv_value_1_0, 
                    		"NUM");
            	    

            }


            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:744:2: ( (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+ | (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) ) )?
            int alt10=3;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==19) ) {
                alt10=1;
            }
            else if ( (LA10_0==20) ) {
                alt10=2;
            }
            switch (alt10) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:744:3: (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:744:3: (otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) ) )+
                    int cnt9=0;
                    loop9:
                    do {
                        int alt9=2;
                        int LA9_0 = input.LA(1);

                        if ( (LA9_0==19) ) {
                            alt9=1;
                        }


                        switch (alt9) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:744:5: otherlv_2= '.' ( (lv_value_3_0= RULE_NUM ) )
                    	    {
                    	    otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleDecVal1680); 

                    	        	newLeafNode(otherlv_2, grammarAccess.getDecValAccess().getFullStopKeyword_2_0_0());
                    	        
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:748:1: ( (lv_value_3_0= RULE_NUM ) )
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:749:1: (lv_value_3_0= RULE_NUM )
                    	    {
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:749:1: (lv_value_3_0= RULE_NUM )
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:750:3: lv_value_3_0= RULE_NUM
                    	    {
                    	    lv_value_3_0=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleDecVal1697); 

                    	    			newLeafNode(lv_value_3_0, grammarAccess.getDecValAccess().getValueNUMTerminalRuleCall_2_0_1_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getDecValRule());
                    	    	        }
                    	           		addWithLastConsumed(
                    	           			current, 
                    	           			"value",
                    	            		lv_value_3_0, 
                    	            		"NUM");
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt9 >= 1 ) break loop9;
                                EarlyExitException eee =
                                    new EarlyExitException(9, input);
                                throw eee;
                        }
                        cnt9++;
                    } while (true);


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:767:6: (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:767:6: (otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) ) )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:767:8: otherlv_4= '-' ( (lv_maxValue_5_0= RULE_NUM ) )
                    {
                    otherlv_4=(Token)match(input,20,FOLLOW_20_in_ruleDecVal1723); 

                        	newLeafNode(otherlv_4, grammarAccess.getDecValAccess().getHyphenMinusKeyword_2_1_0());
                        
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:771:1: ( (lv_maxValue_5_0= RULE_NUM ) )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:772:1: (lv_maxValue_5_0= RULE_NUM )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:772:1: (lv_maxValue_5_0= RULE_NUM )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:773:3: lv_maxValue_5_0= RULE_NUM
                    {
                    lv_maxValue_5_0=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleDecVal1740); 

                    			newLeafNode(lv_maxValue_5_0, grammarAccess.getDecValAccess().getMaxValueNUMTerminalRuleCall_2_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDecValRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"maxValue",
                            		lv_maxValue_5_0, 
                            		"NUM");
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDecVal"


    // $ANTLR start "entryRuleHexVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:797:1: entryRuleHexVal returns [EObject current=null] : iv_ruleHexVal= ruleHexVal EOF ;
    public final EObject entryRuleHexVal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHexVal = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:798:2: (iv_ruleHexVal= ruleHexVal EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:799:2: iv_ruleHexVal= ruleHexVal EOF
            {
             newCompositeNode(grammarAccess.getHexValRule()); 
            pushFollow(FOLLOW_ruleHexVal_in_entryRuleHexVal1784);
            iv_ruleHexVal=ruleHexVal();

            state._fsp--;

             current =iv_ruleHexVal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleHexVal1794); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHexVal"


    // $ANTLR start "ruleHexVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:806:1: ruleHexVal returns [EObject current=null] : (otherlv_0= '%x' ( ( (lv_value_1_1= RULE_NUM | lv_value_1_2= RULE_HEX ) ) ) ( (otherlv_2= '.' ( ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) ) ) )+ | (otherlv_4= '-' ( ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) ) ) ) )? ) ;
    public final EObject ruleHexVal() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_value_1_1=null;
        Token lv_value_1_2=null;
        Token otherlv_2=null;
        Token lv_value_3_1=null;
        Token lv_value_3_2=null;
        Token otherlv_4=null;
        Token lv_maxValue_5_1=null;
        Token lv_maxValue_5_2=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:809:28: ( (otherlv_0= '%x' ( ( (lv_value_1_1= RULE_NUM | lv_value_1_2= RULE_HEX ) ) ) ( (otherlv_2= '.' ( ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) ) ) )+ | (otherlv_4= '-' ( ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) ) ) ) )? ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:810:1: (otherlv_0= '%x' ( ( (lv_value_1_1= RULE_NUM | lv_value_1_2= RULE_HEX ) ) ) ( (otherlv_2= '.' ( ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) ) ) )+ | (otherlv_4= '-' ( ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) ) ) ) )? )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:810:1: (otherlv_0= '%x' ( ( (lv_value_1_1= RULE_NUM | lv_value_1_2= RULE_HEX ) ) ) ( (otherlv_2= '.' ( ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) ) ) )+ | (otherlv_4= '-' ( ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) ) ) ) )? )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:810:3: otherlv_0= '%x' ( ( (lv_value_1_1= RULE_NUM | lv_value_1_2= RULE_HEX ) ) ) ( (otherlv_2= '.' ( ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) ) ) )+ | (otherlv_4= '-' ( ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) ) ) ) )?
            {
            otherlv_0=(Token)match(input,22,FOLLOW_22_in_ruleHexVal1831); 

                	newLeafNode(otherlv_0, grammarAccess.getHexValAccess().getXKeyword_0());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:814:1: ( ( (lv_value_1_1= RULE_NUM | lv_value_1_2= RULE_HEX ) ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:815:1: ( (lv_value_1_1= RULE_NUM | lv_value_1_2= RULE_HEX ) )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:815:1: ( (lv_value_1_1= RULE_NUM | lv_value_1_2= RULE_HEX ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:816:1: (lv_value_1_1= RULE_NUM | lv_value_1_2= RULE_HEX )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:816:1: (lv_value_1_1= RULE_NUM | lv_value_1_2= RULE_HEX )
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==RULE_NUM) ) {
                alt11=1;
            }
            else if ( (LA11_0==RULE_HEX) ) {
                alt11=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }
            switch (alt11) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:817:3: lv_value_1_1= RULE_NUM
                    {
                    lv_value_1_1=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleHexVal1850); 

                    			newLeafNode(lv_value_1_1, grammarAccess.getHexValAccess().getValueNUMTerminalRuleCall_1_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getHexValRule());
                    	        }
                           		addWithLastConsumed(
                           			current, 
                           			"value",
                            		lv_value_1_1, 
                            		"NUM");
                    	    

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:832:8: lv_value_1_2= RULE_HEX
                    {
                    lv_value_1_2=(Token)match(input,RULE_HEX,FOLLOW_RULE_HEX_in_ruleHexVal1870); 

                    			newLeafNode(lv_value_1_2, grammarAccess.getHexValAccess().getValueHEXTerminalRuleCall_1_0_1()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getHexValRule());
                    	        }
                           		addWithLastConsumed(
                           			current, 
                           			"value",
                            		lv_value_1_2, 
                            		"HEX");
                    	    

                    }
                    break;

            }


            }


            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:850:2: ( (otherlv_2= '.' ( ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) ) ) )+ | (otherlv_4= '-' ( ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) ) ) ) )?
            int alt15=3;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==19) ) {
                alt15=1;
            }
            else if ( (LA15_0==20) ) {
                alt15=2;
            }
            switch (alt15) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:850:3: (otherlv_2= '.' ( ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) ) ) )+
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:850:3: (otherlv_2= '.' ( ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) ) ) )+
                    int cnt13=0;
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0==19) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:850:5: otherlv_2= '.' ( ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) ) )
                    	    {
                    	    otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleHexVal1892); 

                    	        	newLeafNode(otherlv_2, grammarAccess.getHexValAccess().getFullStopKeyword_2_0_0());
                    	        
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:854:1: ( ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) ) )
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:855:1: ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) )
                    	    {
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:855:1: ( (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX ) )
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:856:1: (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX )
                    	    {
                    	    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:856:1: (lv_value_3_1= RULE_NUM | lv_value_3_2= RULE_HEX )
                    	    int alt12=2;
                    	    int LA12_0 = input.LA(1);

                    	    if ( (LA12_0==RULE_NUM) ) {
                    	        alt12=1;
                    	    }
                    	    else if ( (LA12_0==RULE_HEX) ) {
                    	        alt12=2;
                    	    }
                    	    else {
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("", 12, 0, input);

                    	        throw nvae;
                    	    }
                    	    switch (alt12) {
                    	        case 1 :
                    	            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:857:3: lv_value_3_1= RULE_NUM
                    	            {
                    	            lv_value_3_1=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleHexVal1911); 

                    	            			newLeafNode(lv_value_3_1, grammarAccess.getHexValAccess().getValueNUMTerminalRuleCall_2_0_1_0_0()); 
                    	            		

                    	            	        if (current==null) {
                    	            	            current = createModelElement(grammarAccess.getHexValRule());
                    	            	        }
                    	                   		addWithLastConsumed(
                    	                   			current, 
                    	                   			"value",
                    	                    		lv_value_3_1, 
                    	                    		"NUM");
                    	            	    

                    	            }
                    	            break;
                    	        case 2 :
                    	            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:872:8: lv_value_3_2= RULE_HEX
                    	            {
                    	            lv_value_3_2=(Token)match(input,RULE_HEX,FOLLOW_RULE_HEX_in_ruleHexVal1931); 

                    	            			newLeafNode(lv_value_3_2, grammarAccess.getHexValAccess().getValueHEXTerminalRuleCall_2_0_1_0_1()); 
                    	            		

                    	            	        if (current==null) {
                    	            	            current = createModelElement(grammarAccess.getHexValRule());
                    	            	        }
                    	                   		addWithLastConsumed(
                    	                   			current, 
                    	                   			"value",
                    	                    		lv_value_3_2, 
                    	                    		"HEX");
                    	            	    

                    	            }
                    	            break;

                    	    }


                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt13 >= 1 ) break loop13;
                                EarlyExitException eee =
                                    new EarlyExitException(13, input);
                                throw eee;
                        }
                        cnt13++;
                    } while (true);


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:891:6: (otherlv_4= '-' ( ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) ) ) )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:891:6: (otherlv_4= '-' ( ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) ) ) )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:891:8: otherlv_4= '-' ( ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) ) )
                    {
                    otherlv_4=(Token)match(input,20,FOLLOW_20_in_ruleHexVal1960); 

                        	newLeafNode(otherlv_4, grammarAccess.getHexValAccess().getHyphenMinusKeyword_2_1_0());
                        
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:895:1: ( ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) ) )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:896:1: ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:896:1: ( (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX ) )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:897:1: (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:897:1: (lv_maxValue_5_1= RULE_NUM | lv_maxValue_5_2= RULE_HEX )
                    int alt14=2;
                    int LA14_0 = input.LA(1);

                    if ( (LA14_0==RULE_NUM) ) {
                        alt14=1;
                    }
                    else if ( (LA14_0==RULE_HEX) ) {
                        alt14=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 14, 0, input);

                        throw nvae;
                    }
                    switch (alt14) {
                        case 1 :
                            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:898:3: lv_maxValue_5_1= RULE_NUM
                            {
                            lv_maxValue_5_1=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleHexVal1979); 

                            			newLeafNode(lv_maxValue_5_1, grammarAccess.getHexValAccess().getMaxValueNUMTerminalRuleCall_2_1_1_0_0()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getHexValRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"maxValue",
                                    		lv_maxValue_5_1, 
                                    		"NUM");
                            	    

                            }
                            break;
                        case 2 :
                            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:913:8: lv_maxValue_5_2= RULE_HEX
                            {
                            lv_maxValue_5_2=(Token)match(input,RULE_HEX,FOLLOW_RULE_HEX_in_ruleHexVal1999); 

                            			newLeafNode(lv_maxValue_5_2, grammarAccess.getHexValAccess().getMaxValueHEXTerminalRuleCall_2_1_1_0_1()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getHexValRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"maxValue",
                                    		lv_maxValue_5_2, 
                                    		"HEX");
                            	    

                            }
                            break;

                    }


                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHexVal"


    // $ANTLR start "entryRuleProseVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:939:1: entryRuleProseVal returns [EObject current=null] : iv_ruleProseVal= ruleProseVal EOF ;
    public final EObject entryRuleProseVal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProseVal = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:940:2: (iv_ruleProseVal= ruleProseVal EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:941:2: iv_ruleProseVal= ruleProseVal EOF
            {
             newCompositeNode(grammarAccess.getProseValRule()); 
            pushFollow(FOLLOW_ruleProseVal_in_entryRuleProseVal2046);
            iv_ruleProseVal=ruleProseVal();

            state._fsp--;

             current =iv_ruleProseVal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleProseVal2056); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProseVal"


    // $ANTLR start "ruleProseVal"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:948:1: ruleProseVal returns [EObject current=null] : (otherlv_0= '<' ( (lv_value_1_0= RULE_ID ) ) otherlv_2= '>' ) ;
    public final EObject ruleProseVal() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_value_1_0=null;
        Token otherlv_2=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:951:28: ( (otherlv_0= '<' ( (lv_value_1_0= RULE_ID ) ) otherlv_2= '>' ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:952:1: (otherlv_0= '<' ( (lv_value_1_0= RULE_ID ) ) otherlv_2= '>' )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:952:1: (otherlv_0= '<' ( (lv_value_1_0= RULE_ID ) ) otherlv_2= '>' )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:952:3: otherlv_0= '<' ( (lv_value_1_0= RULE_ID ) ) otherlv_2= '>'
            {
            otherlv_0=(Token)match(input,23,FOLLOW_23_in_ruleProseVal2093); 

                	newLeafNode(otherlv_0, grammarAccess.getProseValAccess().getLessThanSignKeyword_0());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:956:1: ( (lv_value_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:957:1: (lv_value_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:957:1: (lv_value_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:958:3: lv_value_1_0= RULE_ID
            {
            lv_value_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleProseVal2110); 

            			newLeafNode(lv_value_1_0, grammarAccess.getProseValAccess().getValueIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getProseValRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"value",
                    		lv_value_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleProseVal2127); 

                	newLeafNode(otherlv_2, grammarAccess.getProseValAccess().getGreaterThanSignKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProseVal"


    // $ANTLR start "entryRuleRepeat"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:986:1: entryRuleRepeat returns [EObject current=null] : iv_ruleRepeat= ruleRepeat EOF ;
    public final EObject entryRuleRepeat() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRepeat = null;


        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:987:2: (iv_ruleRepeat= ruleRepeat EOF )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:988:2: iv_ruleRepeat= ruleRepeat EOF
            {
             newCompositeNode(grammarAccess.getRepeatRule()); 
            pushFollow(FOLLOW_ruleRepeat_in_entryRuleRepeat2163);
            iv_ruleRepeat=ruleRepeat();

            state._fsp--;

             current =iv_ruleRepeat; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRepeat2173); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRepeat"


    // $ANTLR start "ruleRepeat"
    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:995:1: ruleRepeat returns [EObject current=null] : ( () ( (lv_lowerBound_1_0= RULE_NUM ) )? otherlv_2= '*' ( (lv_upperBound_3_0= RULE_NUM ) )? ) ;
    public final EObject ruleRepeat() throws RecognitionException {
        EObject current = null;

        Token lv_lowerBound_1_0=null;
        Token otherlv_2=null;
        Token lv_upperBound_3_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:998:28: ( ( () ( (lv_lowerBound_1_0= RULE_NUM ) )? otherlv_2= '*' ( (lv_upperBound_3_0= RULE_NUM ) )? ) )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:999:1: ( () ( (lv_lowerBound_1_0= RULE_NUM ) )? otherlv_2= '*' ( (lv_upperBound_3_0= RULE_NUM ) )? )
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:999:1: ( () ( (lv_lowerBound_1_0= RULE_NUM ) )? otherlv_2= '*' ( (lv_upperBound_3_0= RULE_NUM ) )? )
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:999:2: () ( (lv_lowerBound_1_0= RULE_NUM ) )? otherlv_2= '*' ( (lv_upperBound_3_0= RULE_NUM ) )?
            {
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:999:2: ()
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:1000:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getRepeatAccess().getRepeatAction_0(),
                        current);
                

            }

            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:1005:2: ( (lv_lowerBound_1_0= RULE_NUM ) )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==RULE_NUM) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:1006:1: (lv_lowerBound_1_0= RULE_NUM )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:1006:1: (lv_lowerBound_1_0= RULE_NUM )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:1007:3: lv_lowerBound_1_0= RULE_NUM
                    {
                    lv_lowerBound_1_0=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleRepeat2224); 

                    			newLeafNode(lv_lowerBound_1_0, grammarAccess.getRepeatAccess().getLowerBoundNUMTerminalRuleCall_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRepeatRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"lowerBound",
                            		lv_lowerBound_1_0, 
                            		"NUM");
                    	    

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleRepeat2242); 

                	newLeafNode(otherlv_2, grammarAccess.getRepeatAccess().getAsteriskKeyword_2());
                
            // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:1027:1: ( (lv_upperBound_3_0= RULE_NUM ) )?
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==RULE_NUM) ) {
                alt17=1;
            }
            switch (alt17) {
                case 1 :
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:1028:1: (lv_upperBound_3_0= RULE_NUM )
                    {
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:1028:1: (lv_upperBound_3_0= RULE_NUM )
                    // ../de.thwildau.tm.moses.abnf/src-gen/de/thwildau/tm/moses/abnf/parser/antlr/internal/InternalAbnf.g:1029:3: lv_upperBound_3_0= RULE_NUM
                    {
                    lv_upperBound_3_0=(Token)match(input,RULE_NUM,FOLLOW_RULE_NUM_in_ruleRepeat2259); 

                    			newLeafNode(lv_upperBound_3_0, grammarAccess.getRepeatAccess().getUpperBoundNUMTerminalRuleCall_3_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRepeatRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"upperBound",
                            		lv_upperBound_3_0, 
                            		"NUM");
                    	    

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRepeat"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleRuleSet_in_entryRuleRuleSet75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRuleSet85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRule_in_ruleRuleSet130 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleRule_in_entryRuleRule166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRule176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRule218 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleRule235 = new BitSet(new long[]{0x0000000002E54070L});
    public static final BitSet FOLLOW_ruleAlternation_in_ruleRule256 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAlternation_in_entryRuleAlternation292 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAlternation302 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConcatenation_in_ruleAlternation348 = new BitSet(new long[]{0x0000000000002002L});
    public static final BitSet FOLLOW_13_in_ruleAlternation361 = new BitSet(new long[]{0x0000000002E54070L});
    public static final BitSet FOLLOW_ruleConcatenation_in_ruleAlternation382 = new BitSet(new long[]{0x0000000000002002L});
    public static final BitSet FOLLOW_ruleConcatenation_in_entryRuleConcatenation420 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConcatenation430 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRepetition_in_ruleConcatenation475 = new BitSet(new long[]{0x0000000002E54072L});
    public static final BitSet FOLLOW_ruleRepetition_in_entryRuleRepetition511 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRepetition521 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRepeat_in_ruleRepetition567 = new BitSet(new long[]{0x0000000002E54070L});
    public static final BitSet FOLLOW_ruleElement_in_ruleRepetition589 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElement_in_entryRuleElement625 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElement635 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGroup_in_ruleElement682 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOption_in_ruleElement709 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRuleRef_in_ruleElement736 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCharVal_in_ruleElement763 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumVal_in_ruleElement790 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProseVal_in_ruleElement817 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRuleRef_in_entryRuleRuleRef852 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRuleRef862 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRuleRef906 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGroup_in_entryRuleGroup941 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGroup951 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleGroup988 = new BitSet(new long[]{0x0000000002E54070L});
    public static final BitSet FOLLOW_ruleAlternation_in_ruleGroup1009 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleGroup1021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOption_in_entryRuleOption1057 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOption1067 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleOption1104 = new BitSet(new long[]{0x0000000002E54070L});
    public static final BitSet FOLLOW_ruleAlternation_in_ruleOption1125 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleOption1137 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCharVal_in_entryRuleCharVal1173 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCharVal1183 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleCharVal1224 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumVal_in_entryRuleNumVal1264 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumVal1274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBinVal_in_ruleNumVal1321 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDecVal_in_ruleNumVal1348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHexVal_in_ruleNumVal1375 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBinVal_in_entryRuleBinVal1410 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBinVal1420 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleBinVal1457 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleBinVal1474 = new BitSet(new long[]{0x0000000000180002L});
    public static final BitSet FOLLOW_19_in_ruleBinVal1493 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleBinVal1510 = new BitSet(new long[]{0x0000000000080002L});
    public static final BitSet FOLLOW_20_in_ruleBinVal1536 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleBinVal1553 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDecVal_in_entryRuleDecVal1597 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDecVal1607 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleDecVal1644 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleDecVal1661 = new BitSet(new long[]{0x0000000000180002L});
    public static final BitSet FOLLOW_19_in_ruleDecVal1680 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleDecVal1697 = new BitSet(new long[]{0x0000000000080002L});
    public static final BitSet FOLLOW_20_in_ruleDecVal1723 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleDecVal1740 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHexVal_in_entryRuleHexVal1784 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHexVal1794 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleHexVal1831 = new BitSet(new long[]{0x00000000000000C0L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleHexVal1850 = new BitSet(new long[]{0x0000000000180002L});
    public static final BitSet FOLLOW_RULE_HEX_in_ruleHexVal1870 = new BitSet(new long[]{0x0000000000180002L});
    public static final BitSet FOLLOW_19_in_ruleHexVal1892 = new BitSet(new long[]{0x00000000000000C0L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleHexVal1911 = new BitSet(new long[]{0x0000000000080002L});
    public static final BitSet FOLLOW_RULE_HEX_in_ruleHexVal1931 = new BitSet(new long[]{0x0000000000080002L});
    public static final BitSet FOLLOW_20_in_ruleHexVal1960 = new BitSet(new long[]{0x00000000000000C0L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleHexVal1979 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_HEX_in_ruleHexVal1999 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProseVal_in_entryRuleProseVal2046 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProseVal2056 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleProseVal2093 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleProseVal2110 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleProseVal2127 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRepeat_in_entryRuleRepeat2163 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRepeat2173 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleRepeat2224 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleRepeat2242 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_RULE_NUM_in_ruleRepeat2259 = new BitSet(new long[]{0x0000000000000002L});

}